package exam;

import java.util.ArrayList;
import java.util.Scanner;

public class system {
    public static void main(String[] args) {

        ArrayList<Target> target = new ArrayList<>();
        ArrayList<student> list = new ArrayList<>();
        while (true) {
            System.out.println("-------------------------2025高考志愿填报系统--------------------------");
            System.out.println("【1】考生个人信息录入" + "                                          " + "（1）考生，您好，请先录入个人信息，再进行");
            System.out.println("【2】查看各批次院校" + "                                            " + "其他操作！");
            System.out.println("【3】填报志愿" + "                                                  " + "（2）打印志愿填报表和修改志愿，请先查询院校");
            System.out.println("【4】修改志愿" + "                                                  " + "填报志愿后，再进行操作");
            System.out.println("【5】打印志愿填报表" + "                                             " + "（3）后台管理员:项鹏辉、刘洋");
            System.out.println("【6】退出" + "                                                       " + "2024年10月26日19:00");
            System.out.println("请输入索引【】中的数字，来进行操作");
            //志愿学校数据表
            String[] college1 = {
                    "一批次     清华大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     北京大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     浙江大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   上海交通大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     复旦大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     南京大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次  中国科学技术大学   计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   华中科技大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     武汉大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   西安交通大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     中山大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次  北京航空航天大学    计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     东南大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   北京理工大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     四川大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     哈尔滨大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   北京协和医学院    计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     同济大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   中国人民大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   北京师范大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     天津大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     南开大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     山东大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   西北工业大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     厦门大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     中南大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次     吉林大学        计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   中国农业大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   大连理工大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   华东师范大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "一批次   华南理工大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
            };
            String[] college2 = {
                    "二批次   南京工程学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   安徽工程大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   浙大城市学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   沈阳师范大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   大连交通大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   上海海关学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   西安工程大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   桂林理工大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   上海政法学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   安徽建筑大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   湖南工业大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   绍兴文理学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   厦门理工学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   北京印刷学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   昆明医科大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   华北理工大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   北京联合大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   山西财经大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   遵义医科大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   辽宁工业大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   湖北医药学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   宁波工程学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   河北工程大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   云农农业大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   太原科技大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   广东海洋大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   大连海洋大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   信阳师范大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   湖南理工学院      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   新疆师范大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
                    "二批次   长春师范大学      计算机科学与技术     电子信息工程     自动化     软件工程     人工智能    数字媒体技术     信息安全     高分子材料与工程     物联网工程     物理学",
            };
            Scanner sc = new Scanner(System.in);
            String choose = sc.next();
            switch (choose) {
                case "1" -> addStudent(list);
                case "2" -> queryStudent(college1, college2, list);
                case "3" -> addIdea(target);
                case "4" -> updateIdea(target);
                case "5" -> printStudent(target, list);
                case "6" -> {
                    System.out.println("退出");
                    System.exit(0);//停止java虚拟机的运行；
                }
                default -> System.out.println("错误！请重新输入");
            }
        }
    }


    //考生个人信息录入
    public static void addStudent(ArrayList<student> list) {
        //创建考生对象
        student t = new student();
        //姓名
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的姓名:");
        String name = sc.next();
        t.setName(name);
        //高考分数
        System.out.println("请输入您的高考分数:");
        while (true) {
            int scores = sc.nextInt();
            if (scores >= 0 && scores <= 750) {
                t.setScores(scores);
                break;
            } else {
                System.out.println("错误！请重新输入");

            }
        }

        //准考证号
        System.out.println("请输入您的准考证号:");
        String testname = sc.next();
        t.setTestname(testname);
        //身份证号
        System.out.println("请输入您的身份证号:");
        String id = sc.next();
        t.setId(id);
        //手机号
        System.out.println("请输入您的手机号:");
        String phonenumber = sc.next();
        t.setPhonenumber(phonenumber);
        //生源地
        System.out.println("请输入您的生源地:");
        String address = sc.next();
        t.setAddress(address);
        //赋值给集合
        list.add(t);
    }

    //查看各批次院校
    public static void queryStudent(String[] college1, String[] college2, ArrayList<student> list) {
        if (list.size() == 0) {
            System.out.println("个人信息未填写，无法查询院校信息！");
            return;
        }
        student q = list.get(0);
        if (q.getScores() >= 550 && q.getScores() <= 750) {
            System.out.println("【您的高考分数所在范围为一批次院校】，名单如下:");
            for (int i = 0; i < college1.length; i++) {
                String index = college1[i];
                System.out.println(index);
            }
        } else if (q.getScores() >= 0 && q.getScores() < 550) {
            System.out.println("【您的高考分数所在范围为二批次院校】，名单如下:");
            for (int i = 0; i < college2.length; i++) {
                String index = college2[i];
                System.out.println(index);
            }
        } else {
            System.out.println("错误！请重新输入！");
            return;
        }
    }

    //填报志愿
    public static void addIdea(ArrayList<Target> target) {
        //键盘录入//
        Scanner sc = new Scanner(System.in);
        //最多循环30次停止//表示最大容纳三十个志愿填报
        //判断在每次添加完志愿后，是否还要继续
        loop:
        for (int i = 1; i <= 30; i++) {
            if (i > 1) {
                System.out.println("是否继续添加？" + "请输入【是】或【否】");
                String choose = sc.next();
                switch (choose) {
                    case "是" -> System.out.println("请继续添加第" + i + "志愿");
                    case "否" -> {
                        break loop;
                    }
                    default -> {
                        System.out.println("错误！请按照格式输入！");
                        break;
                    }
                }
            }
            //创建志愿对象
            Target s = new Target();
            //一组最多六个专业
            System.out.println("请输入志愿" + i + "的学校批次:" + "   【一】或者【二】");
            String enrollNumber = sc.next();
            System.out.println("请输入院校名称:");
            String schoolName = sc.next();
            System.out.println("请输入第一专业名称:");
            String majorOne = sc.next();
            System.out.println("请输入第二专业名称:");
            String majorTwo = sc.next();
            System.out.println("请输入第三专业名称:");
            String majorThree = sc.next();
            System.out.println("请输入第四专业名称:");
            String majorFour = sc.next();
            System.out.println("请输入第五专业名称:");
            String majorFive = sc.next();
            System.out.println("请输入第六专业名称:");
            String majorSix = sc.next();


            //赋值给创建的对象；
            s.setEnrollNumber(enrollNumber);
            s.setSchoolName(schoolName);
            s.setMajorOne(majorOne);
            s.setMajorTwo(majorTwo);
            s.setMajorThree(majorThree);
            s.setMajorFour(majorFour);
            s.setMajorFive(majorFive);
            s.setMajorSix(majorSix);
            //把志愿对象添加到Target集合中去
            target.add(s);
            //提示，添加成功
            System.out.println("志愿" + i + "添加成功");
        }
    }

    //修改志愿
    public static void updateIdea(ArrayList<Target> target) {
        if (target.size() == 0) {
            System.out.println("错误！您还没有填报志愿，请填报完再修改！");
            return;
        }
        //打印已填写的志愿报表
        System.out.println("您的志愿填报表如下所示");
        System.out.println("===================================================================================================================================================");
        //打印表头信息
        System.out.println("录取批次\t序列\t\t院校名称\t\t专业一名称\t\t专业二名称\t\t专业三名称\t\t专业四名称\t\t专业五名称\t\t专业六名称");
        for (int i = 0; i < target.size(); i++) {
            Target t = target.get(i);
            System.out.println(t.getEnrollNumber() + "批次" + "\t\t" + "第" + (i + 1) + "志愿" + "\t\t" + t.getSchoolName() + "\t" + t.getMajorOne() + "\t\t" + t.getMajorTwo()
                    + "\t\t" + t.getMajorThree() + "\t\t\t" + t.getMajorFour() + "\t\t" + t.getMajorFive() + "\t\t" + t.getMajorSix());
        }
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入交换顺序的第一个志愿:");
        int number1 = sc.nextInt() - 1;
        if (number1 >= 0 && number1 <= target.size()) {
            System.out.println("请输入交换顺序的第二个志愿:");
            int number2 = sc.nextInt() - 1;
            if (number2 >= 1 && number2 <= target.size()) {
                Target temp = target.get(number1);
                //
                target.set(number1, target.get(number2));
                target.set(number2, temp);
            } else {
                System.out.println("错误！每有检索到此序列志愿，请重新输入");
                return;
            }
        } else {
            System.out.println("错误！每有检索到此序列志愿，请重新输入");
            return;
        }
        System.out.println("修改成功，您的志愿填报表如下所示");
        System.out.println("===================================================================================================================================================");
        //打印表头信息
        System.out.println("录取批次\t序列\t\t院校名称\t\t专业一名称\t\t专业二名称\t\t专业三名称\t\t专业四名称\t\t专业五名称\t\t专业六名称");
        for (int i = 0; i < target.size(); i++) {
            Target t = target.get(i);
            System.out.println(t.getEnrollNumber() + "批次" + "\t\t" + "第" + (i + 1) + "志愿" + "\t\t" + t.getSchoolName() + "\t" + t.getMajorOne() + "\t\t" + t.getMajorTwo()
                    + "\t\t" + t.getMajorThree() + "\t\t\t" + t.getMajorFour() + "\t\t" + t.getMajorFive() + "\t\t" + t.getMajorSix());
        }
    }

    //打印志愿报表
    public static void printStudent(ArrayList<Target> target, ArrayList<student> list) {
        if (list.size() == 0) {
            System.out.println("错误！您还没有填入个人信息，请填完后再打印");
            return;
        }

        if (target.size() == 0) {
            System.out.println("错误！您还没有填报志愿，请填报完后再打印！");
            return;
        }
        //打印个人信息
        student s = list.get(0);
        System.out.println("姓名:" + s.getName() + "\t\t" + "高考分数:" + s.getScores() + "分" + "\t\t" + "准考证号:" + s.getTestname() + "\t\t" + "身份证号:" + s.getId() + "\t\t" + "手机号:" + s.getPhonenumber() + "\t\t" + "生源地:" + s.getAddress());
        System.out.println("===================================================================================================================================================");
        //打印表头信息
        System.out.println("录取批次\t序列\t\t院校名称\t\t专业一名称\t\t专业二名称\t\t专业三名称\t\t专业四名称\t\t专业五名称\t\t专业六名称");
        for (int i = 0; i < target.size(); i++) {
            Target t = target.get(i);
            System.out.println(t.getEnrollNumber() + "批次" + "\t\t" + "第" + (i + 1) + "志愿" + "\t\t" + t.getSchoolName() + "\t" + t.getMajorOne() + "\t\t" + t.getMajorTwo()
                    + "\t\t" + t.getMajorThree() + "\t\t\t" + t.getMajorFour() + "\t\t" + t.getMajorFive() + "\t\t" + t.getMajorSix());
        }
    }
}
